/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package logica;

import controlador.ControladorJPanelAltaAmigo;
import dao.AmigoDao;
import dao.GenericDao;
import dao.SeccionDao;
import java.awt.Color;
import java.awt.event.KeyEvent;
import javax.swing.JComboBox;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JTextPane;
import modelo.Amigo;
import modelo.Lider;
import modelo.Seccion;

/**
 *
 * @author Elias Mendoza
 */
public class ModuloAltaAmigo extends gestion implements Runnable{

  private int tarea;
  ControladorJPanelAltaAmigo driver;

  public ModuloAltaAmigo(ControladorJPanelAltaAmigo driver) {
    this.driver = driver;
  }

  public void asignaTarea(int tarea) {
    this.tarea = tarea;
  }

  //el metodo run del jecutara las tarea que requieren conexion a la base de datos, ya que son las tareas que mas memoria consumen
  public void run() {
    try {
      switch (tarea) {
        case 1:
          System.out.println("llenando los cmbox");
          llenaComboLideres(driver.panel.jComboBoxLider);
//          llenaComboSecciones(driver.panel.jComboBoxSeccion);
          break;
        case 2:
          System.out.println("comenzando el registro");
          registrar();
          break;
      }

    } finally {
      return;
    }
  }

  //Metods que gestinan el comportamiento del JPanelAltaAmigo y que son ejcutados en el hilo
  //Metodo que llena el Combo de secciones
  private void llenaComboSecciones(JComboBox comboBox) {
    comboBox.removeAllItems();
    GenericDao operacion = new GenericDao();
    Seccion array[] = operacion.consultaSecciones();
    for (int i = 0; i < array.length; i++) {
      comboBox.addItem(array[i]);
    }
  }

  //Metodo que llena el combo con los lideres registrados
  private void llenaComboLideres(JComboBox comboBox) {
    comboBox.removeAllItems();
    GenericDao operacion = new GenericDao();
    Lider array[] = operacion.consultaLideres();
    for (int i = 0; i < array.length; i++) {
      comboBox.addItem(array[i]);
    }
  }

  //metodo que registra un amigo utilizando una instaciona  de AmigoDao()
  private void registrar() {
    JTextField[] campos = {driver.panel.jTextFieldApellidos, driver.panel.jTextFieldDireccion, driver.panel.jTextFieldNombre, driver.panel.jTextFieldFolio};
    if (camposVacios(campos)) {
      System.out.println("los campos estan vacios");
      return;
    }

    Amigo amigo = new Amigo();
    amigo.setApellidos(driver.panel.jTextFieldApellidos.getText());
    amigo.setDireccion(driver.panel.jTextFieldDireccion.getText());
    amigo.setNombre(driver.panel.jTextFieldNombre.getText());
    amigo.setNumeroAmigo(Integer.parseInt(driver.panel.jTextFieldFolio.getText()));
    amigo.setTelefono1(driver.panel.jTextFieldTelefono.getText());
    amigo.setTelefono2(driver.panel.jTextFieldTelefono2.getText());
    amigo.setLider((Lider) driver.panel.jComboBoxLider.getSelectedItem());

//    Seccion seccion = new SeccionDao().loadSeccion((Seccion) driver.panel.jComboBoxSeccion.getSelectedItem());
//
//    amigo.addSeccion(seccion);

//    new AmigoDao().relacionar(seccion, amigo);

    if (new AmigoDao().guardar(amigo)) {
      JOptionPane.showMessageDialog(driver.panel, "Registro Exitoso", "Registro", JOptionPane.INFORMATION_MESSAGE);
      vaciarCampos(campos);
      llenarCampoRegistro(amigo, driver.panel.jTextPanelRegistro, Color.BLUE);

    } else {
      JOptionPane.showMessageDialog(driver.panel, "Fallo el registro, verificar datos (duplicidad)", "error al registrar", JOptionPane.ERROR_MESSAGE);
      llenarCampoRegistro(amigo, driver.panel.jTextPanelRegistro, Color.RED);
    }
  }


//  private boolean camposVacios(JTextField[] campos) {
//    for (int i = 0; i < campos.length; i++) {
//      if (campos[i].getText().isEmpty()) {
//        JOptionPane.showMessageDialog(driver.panel, "Fallo el registro, campos vacios", "error al registrar", JOptionPane.ERROR_MESSAGE);
//        return true;
//      }
//    }
//    return false;
//  }
//
//  private void vaciarCampos(JTextField[] campos) {
//    for (int i = 0; i < campos.length; i++) {
//      campos[i].setText("");
//    }
//  }
 
  public void vaciarCampos() {
    JTextField[] campos = {driver.panel.jTextFieldApellidos, driver.panel.jTextFieldDireccion, driver.panel.jTextFieldNombre, driver.panel.jTextFieldFolio};
    for (int i = 0; i < campos.length; i++) {
      campos[i].setText("");
    }
  }

  public void llenarCampoRegistro(Amigo amigo, JTextPane paneldatos, Color color) {

    paneldatos.setForeground(color);
    paneldatos.setBackground(color);

    paneldatos.setText(amigo.getNombre() + "\n");
    paneldatos.setText(paneldatos.getText() + amigo.getApellidos() + "\n");
    paneldatos.setText(paneldatos.getText() + amigo.getTelefono1() + "\n");
    paneldatos.setText(paneldatos.getText() + amigo.getTelefono2() + "\n");
    paneldatos.setText(paneldatos.getText() + amigo.getDireccion() + "\n");
//      paneldatos.setText(paneldatos.getText() + amigo.getSeccion() + "\n");
    paneldatos.setText(paneldatos.getText() + amigo.getLider() + "\n");


  }
}
